//
//  HMTabBar.swift
//  weibo28
//
//  Created by 范英强 on 16/3/23.
//  Copyright © 2016年 范英强. All rights reserved.
//

import UIKit

// 声明协议
// 在Swift中 声明的代理如果使用weak 修饰的话 需要继承基协议NSObjectProtocol
protocol HMTabBarDelegate: NSObjectProtocol{
    // 声明协议方法
    func composeButtonClick()
}

class HMTabBar: UITabBar {
    
    // 声明一个代理 使用weak 方式循环引用
    weak var hmDelegate:HMTabBarDelegate?
    
    // 使用父类已有方法  做自己特有的事情 需要重写 override
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    // 如果我们重写了initWithFrame 方法 系统叫我们必须实现 init:coder
    // 如果使用xib 或者sb 创建其view 的时候 就会走这个方法
    // required 重要的
    required init?(coder aDecoder: NSCoder) {
        // 断言
       // fatalError("init(coder:) has not been implemented")
        super.init(coder: aDecoder)
        setupUI()
    }
    // MARK: - 设置视图
    func setupUI(){
        // 添加控件
        addSubview(composeButton)
        
    }
    // MARK: - 更改子控件的frame
    override func layoutSubviews() {
        super.layoutSubviews()
        
        // 设置composebuton 的frame
        composeButton.center.x = self.center.x
        // 不能使用tabbar的center.y
        //composeButton.center.y = self.center.y
        composeButton.center.y = self.frame.height * 0.5
        // 控件宽度
        let itemW = SCREENW / 5
        // 循环遍历记数
        var index: CGFloat = 0
        
        //UITabBarButton 系统私有无法直接改变
        // 遍历tabbar subviews 得到上面的子控件
        for value in self.subviews{
            
            // 先判断是否是 UITabBarButton 通过看class

            if value.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                // 设置UITabBarButton frame
                value.frame = CGRect(x: itemW * index, y: 0, width: itemW, height: value.frame.height)
                
                index++
                // 考虑到撰写按钮位置
                if index == 2{
                    index++
                }
                
            }

        }
        
    }
    
    // MARK: - 懒加载视图
    // 撰写按钮
    private lazy var composeButton: UIButton = {
        let button = UIButton()
        // 点击事件
        button.addTarget(self, action: "composeButtonClick", forControlEvents: UIControlEvents.TouchUpInside)
        // 设置按钮背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        // 设置按钮的image
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        // 设置大小
        button.sizeToFit()
        return button
    }()
    
    // MARK: - 监听方法 @objc告知系统 基于OC的运行时
    @objc private func composeButtonClick(){
        hmDelegate?.composeButtonClick()
    }
    
    
    
}
